# #利用map批量检测用户名是否符合规范（正则+map映射）
import re
def func1(x):
    ret=re.findall(r"^[A-Za-z_][A-Za-z0-9_]{5,17}",x)
    if ret:
        print(f'{x}符合条件')
    else:
        print(f'{x}不符合条件')
user=['asdf453536_','awefjkh_aoiwe','0aefalkfj','ewio_awef','ewwofop_09089uS']
list(map(func1,user))
#
#
#
#
# # 利用filter把合法的用户名显示出来
print(list(filter(lambda x:re.findall('^[A-Za-z_][A-Za-z0-9_]{5,17}',x),user)))


#匿名函数+reduce实现阶乘
from functools import reduce
#
# n=int(input('请输入要对前多少数求阶乘：'))
print(reduce(lambda x,y:x*y,range(1,n+1)))

#filter找出【1-100】能被3整除的数
print(list(filter(lambda x:(x/3).is_integer(),range(1,101))))

#map函数求list[1-10]各项的平方
print(list(map(lambda x:x**2,range(1,11))))

#将列表[1,4,5,9]转化为‘1459’的字符串
from functools import reduce
result=reduce(lambda x,y:x+y,list(map(lambda x:str(x),[1,4,5,9])))
print(type(result))
print(result)

# 有以下列表：list1=[7,-8,5,4,0,-2,-5]
# #实现：正数在前负数在后。
#       正数从小到大
# #       负数从大到小
list1=[7,-8,5,4,0,-2,-5]
lis1=list(filter(lambda x:x>0,list1))
lis2=list(filter(lambda x:x<=0,list1))
print(sorted(lis1)+sorted(lis2, key=abs))

#这是一个字符串排序，排序规则：小写<大写<奇数<偶数
s='asdf123GDSdsf23'
def jud(x):
    if x.isalpha():
        if x.islower():
            return (0, 0, x)
        else:
            return (0, 1, x)
    if x.isdigit():
        if int(x) % 2==0:
            return (1, 1, x)
        else:
            return (1, 0, x)
print(sorted(s,key=jud))







